]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/network: Add NMSection:checked property
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 3 Aug 2022 01:40:40 +0000 (03:40 +0200)
committerMarge Bot <marge-bot@gnome.org>
Wed, 10 Aug 2022 16:37:15 +0000 (16:37 +0000)
Unsurprisingly, this will become the quick toggles 'checked' state.

Equally unsurprising, it is set when at least one item is active.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2408>

js/ui/status/network.js

index a3a8d8faaf2f3e418c2c42197f74b7db3b421181..20b44da1c32b76cb6e1b233b2df1615da091126d 100644 (file)
@@ -1275,6 +1275,11 @@ const NMVpnConnectionItem = GObject.registerClass({
 });
 
 const NMSection = GObject.registerClass({
+    Properties: {
+        'checked': GObject.ParamSpec.boolean('checked', '', '',
+            GObject.ParamFlags.READWRITE,
+            false),
+    },
     Signals: {
         'activation-failed': {},
         'icon-changed': {},
@@ -1322,6 +1327,11 @@ const NMSection = GObject.registerClass({
             (item, i) => (item.visible = i < MAX_VISIBLE_NETWORKS));
     }
 
+    _updateChecked() {
+        const [firstActive] = this._getActiveItems();
+        this.checked = !!firstActive;
+    }
+
     _resortItem(item) {
         const pos = this._itemSorter.upsert(item);
         this._itemsSection.moveMenuItem(item, pos);
@@ -1332,6 +1342,7 @@ const NMSection = GObject.registerClass({
             `${this} already has an item for ${key}`);
 
         item.connectObject(
+            'notify::is-active', () => this._updateChecked(),
             'notify::name', () => this._resortItem(item),
             'destroy', () => this._removeItem(key),
             this);
@@ -1357,6 +1368,7 @@ const NMSection = GObject.registerClass({
     _sync() {
         this.visible = this._items.size > 0;
         this._updateItemsVisibility();
+        this._updateChecked();
     }
 });